package com.ideabove.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class ImageDBHelper {
	 	
		public static final String KEY_TYPE = "type";
	    public static final String KEY_FILENAME = "fname";
	    public static final String KEY_ROWID = "_id";
	  
	    private static final String TAG = "ImageDBHelper";
	    private DatabaseHelper mDbHelper;
	    private SQLiteDatabase mDb;
	   
	    /**
	     * Database creation sql statement
	     */
	    private static final String DATABASE_CREATE =
	    		"CREATE TABLE save_images (" 
	    				+ "_id INTEGER PRIMARY KEY autoincrement,"
	            		+ "type text NOT NULL," 
	            		+ "fname text NOT NULL"
	            +");";
	   
	    private static final String DATABASE_NAME = "bono.db";
	    private static final String DATABASE_TABLE = "images";
	    private static final int DATABASE_VERSION = 2;
	   
	    private final Context mCtx;	  
	    private static class DatabaseHelper extends SQLiteOpenHelper {

	        DatabaseHelper(Context context) {
	            super(context, DATABASE_NAME, null, DATABASE_VERSION);
	        }

	        @Override
	        public void onCreate(SQLiteDatabase db) {
	            db.execSQL(DATABASE_CREATE);
	        }
	   
	        @Override
	        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
	                    + newVersion + ", which will destroy all old data");
	            db.execSQL("DROP TABLE IF EXISTS save_images");
	            onCreate(db);
	        }

	    }
	   
	    public ImageDBHelper(Context ctx) {
	        this.mCtx = ctx;
	    }
	
	    public ImageDBHelper open() throws SQLException {

	        mDbHelper = new DatabaseHelper(mCtx);
	        mDb = mDbHelper.getWritableDatabase();
	        return this;
	    }
	   
	    public void close() {
	        mDbHelper.close();
	    } 
	    
	    public long insertNote(String title, String body) {
	        ContentValues initialValues = new ContentValues();
	        initialValues.put(KEY_TYPE, title);
	        initialValues.put(KEY_FILENAME, body);

	        return mDb.insert(DATABASE_TABLE, null, initialValues);
	    }
	   
	    public boolean deleteNote(long rowId) {
	        Log.i("Delete called", "value__" + rowId);	        
	        return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
	    }
	   
	    public Cursor fetchAllNotes() {	   
	        return mDb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TYPE,
	        		KEY_FILENAME }, null, null, null, null, null);

	    }
	   
	    public Cursor fetchNote(long rowId) throws SQLException {
	        Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TYPE,
	        		KEY_FILENAME }, KEY_ROWID + "=" + rowId, null, null, null, null,
	                null);

	        if (mCursor != null) {
	            mCursor.moveToFirst();
	        }
	        return mCursor;
	    }
	   
	    public boolean updateNote(long rowId, String title, String body) {
	        ContentValues args = new ContentValues();
	        args.put(KEY_TYPE, title);
	        args.put(KEY_FILENAME, body);
	        return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
	    } 
}
